/**
 * 这个js的作用,是读取yml配置文件中kafka的mapping配置
 */
const yaml = require('js-yaml')
const fs = require('fs')


// 获取exe文件的位置, c:/program1/win-unpacked/protocol42-generator.exe这样的
let exeFileName = process.execPath // 或者用: process.env.PORTABLE_EXECUTABLE_DIR
let ymlFileName = exeFileName.replace('.exe', '.yml')

// 根据.exe文件所在的路径,如果文件不存在则创建yml文件,文件名同.exe文件
if (!fs.existsSync(ymlFileName)) {
  console.log(`iot需要的yml配置文件不存在,创建空文件: ${ymlFileName}`)
  fs.writeFileSync(ymlFileName, '')
}

// 用js-yaml库,读取yml配置文件为一个对象
let arr = yaml.load(fs.readFileSync(ymlFileName, 'utf8'))
// 最终export出去的集合
let mappings = []

if (!arr || arr.length === 0) {
  // 提示不存在配置
  console.log(`${ymlFileName}配置文件中没有内容,使用默认对象`)
  mappings[0] = {}
  mappings[0].system = 'TF01'
  mappings[0].subSystem = '1m1lh'

  mappings[1] = {}
  mappings[1].system = 'TF02'
  mappings[1].subSystem = '2m2lh'

  mappings[2] = {}
  mappings[2].system = 'ZD'
  mappings[2].subSystem = 'zd'
} else {
  // 直接一步到位获取obj中的mappings,是个对象列表
  console.log(`${ymlFileName}配置文件中的内容${arr}`)
  mappings = arr
}

mappings.forEach(m => {
  // 新增topic字段,是这样的iotdata_tf022_pointdata_222m3lh
  m.topic = 'iotdata_' + m.system.toLowerCase() + '_pointdata_' + m.subSystem.toLowerCase()
  // 新增enabled字段
  m.enabled = true
})

export default {mappings}
